#ifndef _VERTICAL_MODEL_H
#define _VERTICAL_MODEL_H

#include "mtxlib.h"

#ifndef VERTICAL_PIPE_LENGTH
#define VERTICAL_PIPE_LENGTH	(25)
#endif

#ifndef VERTICAL_PIPE_WIDTH
#define VERTICAL_PIPE_WIDTH	(0.4)
#endif

#ifndef VERTICAL_VELOCITY
#define VERTICAL_VELOCITY	(0)
#endif

/**					
*					   ||	pipeLength, cross section is in y,z coordinate
*	pipe like that     ||______emergePoint   
*					   000
*					    0
*	
*						_____
*					   |  .  | --> cross section width
*					   |_____| --> emergePoint in the center
*
*/

class VerticalModel{
	private:
		static VerticalModel *verticalModel;

		VerticalModel(vector3 emergePoint = vector3(0, 0, 0),
			float pipeLength = VERTICAL_PIPE_LENGTH,
			float width = VERTICAL_PIPE_WIDTH){
				this->emergePoint.x = emergePoint.x;
				this->emergePoint.y = emergePoint.y;
				this->emergePoint.z = emergePoint.z;

				this->pipeLength = pipeLength;

				this->width = width;

				this->velocity = VERTICAL_VELOCITY;
		}

	public:
		vector3 emergePoint;
		float pipeLength;
		float width;
		float velocity;

		static VerticalModel* initInstance(
			vector3 emergePoint = vector3(0, 0, 0),
			float pipeLength = VERTICAL_PIPE_LENGTH,
			float width = VERTICAL_PIPE_WIDTH);

		static VerticalModel* getInstance();

		vector3 getPosition();

		vector3 getVelocity();
};

#endif